package conf

type System struct {
	Address string `mapstructure:"address" json:"address" yaml:"address"` // 服务器地址:端口
	Name    string `mapstructure:"name" json:"name" yaml:"name"`          // 服务名名字
}

type Etcd struct {
	Hosts    []string `mapstructure:"hosts" json:"hosts" yaml:"hosts"`
	User     string   `mapstructure:"user" json:"user" yaml:"user"`
	Password string   `mapstructure:"password" json:"password" yaml:"password"`
	RpcKey   string   `mapstructure:"rpcKey" json:"rpcKey" yaml:"rpcKey"`
}

type Gorm struct {
	Datasource   string `mapstructure:"datasource" json:"datasource" yaml:"datasource"`       // 服务器地址:端口
	MaxIdleConns int    `mapstructure:"maxIdleConns" json:"maxIdleConns" yaml:"maxIdleConns"` // 空闲中的最大连接数
	MaxOpenConns int    `mapstructure:"maxOpenConns" json:"maxOpenConns" yaml:"maxOpenConns"` // 打开到数据库的最大连接数
	LogMode      string `mapstructure:"logMode" json:"logMode" yaml:"logMode"`                // 是否开启Gorm全局日志
	LogZap       bool   `mapstructure:"logZap" json:"logZap" yaml:"logZap"`                   // 是否通过zap写入日志文件
}

type Redis struct {
	DB       int    `mapstructure:"db" json:"db" yaml:"db"`                   // redis的哪个数据库
	Address  string `mapstructure:"address" json:"address" yaml:"address"`    // 服务器地址:端口
	Password string `mapstructure:"password" json:"password" yaml:"password"` // 密码
}

type Zap struct {
	Level         string `mapstructure:"level" json:"level" yaml:"level"`                         // 级别
	Prefix        string `mapstructure:"prefix" json:"prefix" yaml:"prefix"`                      // 日志前缀
	Format        string `mapstructure:"format" json:"format" yaml:"format"`                      // 输出
	Director      string `mapstructure:"director" json:"director"  yaml:"director"`               // 日志文件夹
	EncodeLevel   string `mapstructure:"encodeLevel" json:"encodeLevel" yaml:"encodeLevel"`       // 编码级
	StacktraceKey string `mapstructure:"stacktraceKey" json:"stacktraceKey" yaml:"stacktraceKey"` // 栈名

	MaxAge       int  `mapstructure:"maxAge" json:"maxAge" yaml:"maxAge"`                   // 日志留存时间
	ShowLine     bool `mapstructure:"showLine" json:"showLine" yaml:"showLine"`             // 显示行
	LogInConsole bool `mapstructure:"logInConsole" json:"logInConsole" yaml:"logInConsole"` // 输出控制台
}

type RpcClientConf struct {
	Etcd Etcd
	Name string `mapstructure:"name" json:"name" yaml:"name"`
}
